#ifndef VIDFILTER_H
#define VIDFILTER_H

//Библиотека Qt.
#include <QObject>
#include <QHash>
#include <QVariant>


//Внутренняя библиотека.
#include "params.h"


class VidFilter : public QObject
{
	Q_OBJECT
signals:
	void information(const QString &msg);
	void warning(const QString &msg);
	void critical(const QString &msg);

public:
	enum TYPE {SWITCH = 0, MOTION = 1, FILEWRITER = 2};

	//Конструктор.
	VidFilter(int index, QObject *parent = NULL);

	//Деструктор.
	virtual ~VidFilter();

	//Функция возврата типа фильтра.
	virtual VidFilter::TYPE getType() = 0;

	//Функция возврата списка значений параметра фильтра.
	virtual bool getListParam(DevParam::GET_LIST_PARAM param, QHash<int, QVariant> *valhash);

	//Функция возврата параметра фильтра.
	virtual bool getParam(DevParam::GET_PARAM param, QVariant *value);

	//Функция установки параметра фильтра.
	virtual bool setParam(DevParam::SET_PARAM param, QVariant value);

	//Оператор сравнения.
	bool operator==(const VidFilter &filter) const;

protected:
	//Функция подключения фильтра.
	bool connectFilter(VidFilter *filter);

	//Функция отключения фильтра.
	bool disconnectFilter(VidFilter *filter);

private:
	int filterIndex;

	//Список подключенных фильтров.
	QList<VidFilter *> filtersList;

};

#endif
